package br.ucb.rastreador.rmi.servidor;

import java.rmi.Naming;

import br.ucb.rastreador.rmi.mapeador.impl.MapeadorImpl;

/**
 * Servidor rmi que disponibiliza um objeto remoto do tipo <code>Mapeador</code> para que a classe 
 * cliente possa enviar os rastro e assim serem inseridos na base.
 * 
 * @author Frederico Spohr
 * @version 1.0
 */
public class ServidorRmi {    
    private static ServidorRmi instance;    
    
    /**
     * Construtor privado     
     */
    private ServidorRmi() {}
   
    /**
     * @return retorna uma instancia unica do servidor rmi.
     */
    public static ServidorRmi getInstance(){
        if (instance == null){
            instance = new ServidorRmi();
        }
        return instance;
    }    
    
    /**
     * Inicia o servidor disponibilizando um objeto do tipo <code>Mapeador</code> para que 
     * o cliente possa ter acesso.
     */
    public void iniciar(){
        
    	try {
            MapeadorImpl mapeador = new MapeadorImpl();            
            Naming.rebind("Interface", mapeador);
            System.out.println("Iniciou");            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * Finaliza o servidor     
     */
     public void finalizar(){
         try {
            Naming.unbind("Interface");
            System.out.println("Finalizou");
        } catch (Exception e) {
            e.printStackTrace();
        }
     }
}
